package org.openkanban.server.service;

import java.util.List;

import org.openkanban.server.domain.Activity;
import org.openkanban.server.domain.Board;
import org.openkanban.server.domain.User;
import org.openkanban.shared.util.StatusCodes;

/**
 * board service api
 */
public interface BoardService {

    Board getBoardById(Long boardId);

    List<Board> getAll();

    Board createBoard(Board board, Long userId);

    Board removeBoard(Board board);

    Board updateBoard(Board board);

    Board getBoardByActivityIdLong(Long parentActivityId);

    Board getDefaultBoardByUserId(Long userId);

    Long getNextBoardId(Long currentBoardId, Long userId);

    Long getPriorBoardId(Long currentBoardId, Long userId);

    Activity addActivityToBoard(Long parentBoardId, Activity newActivity);

    StatusCodes addContactToBoard(Long parentBoardId, User newUser);

    StatusCodes removeContactFromBoard(Long parentBoardId, Long userId);
}
